用python将csv转excel (.xls和.xlsx)的几种方式

您所在的位置:网站首页 csv文件转成excel格式 都在第一列 用python将csv转excel (.xls和.xlsx)的几种方式

用python将csv转excel (.xls和.xlsx)的几种方式

2024-06-25 12:38| 来源: 网络整理| 查看: 265

excel 后缀有2种格式, .xls 是从 Excel 97 到 Excel 2003 的默认文件格式,而 .xlsx 是 Excel 2007 及更高版本的默认文件格式。 .xlsx和.xls格式的主要区别在于,.xls格式单个工作表最多支持65536行,256列。 .xlsx格式最多支持1048576行,16384列。 此外就是,存储同样多的数据,.xlsx格式文件更小。基本就这两点区别。

处理excel

python 可以使用xlrd,xlrwt,openpyxl,xlwings,pandas 等库操作 Excel 。

xlwt 操作

使用xlwt 操作 excel, 保存 .xls 后缀的文件

import xlwt def csv_xls(filename, xlsname): f = open(filename, 'r', encoding='utf-8') xls = xlwt.Workbook() sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True) x = 0 for line in f: for i in range(len(line.split(','))): print(i) item = line.split(',')[i] sheet.write(x, i, item) x += 1 f.close() xls.save(xlsname) if __name__ == "__main__": filename = "test1.csv" xlsname ="res1.xls" csv_xls(filename,xlsname)

xlwt 库仅支持.xls 后缀,不支持.xlsx 后缀的excel 文件

openpyxl 操作

使用openpyxl 库将 csv 转成 .xlsx格式。

from openpyxl import Workbook import datetime def csv_to_xlsx_pd(sourcePath:str,savePath:str,encode='utf-8'): """将csv 转为 excel(.xlsx格式) 如果不需要可以把计时相关代码删除 Args: sourcePath:str 来源文件路径 savePath:str 保存文件路径,需要包含保存的文件名,文件名需要是 xlsx 格式的 encode='utf-8' 默认编码,可以改为需要的编码如gbk """ print('开始处理%s' % sourcePath) curr_time = datetime.datetime.now() print(curr_time) f = open(sourcePath, 'r', encoding=encode) # 创建一个workbook 设置编码 workbook = Workbook() # 创建一个worksheet worksheet = workbook.active workbook.title = 'sheet' for line in f: row = line.split(',') worksheet.append(row) # if row[0].endswith('00'): # 每一百行打印一次 # print(line, end="") workbook.save(savePath) print('处理完毕') curr_time2 = datetime.datetime.now() print(curr_time2-curr_time) if __name__ == '__main__': source = 'source.csv' save = 'result.xlsx' csv_to_xlsx_pd(sourcePath=source, savePath=save, encode='utf-8')

数据量小于1w操作会比较快,数据量大于50w, workbook.save() 保持数据会很慢,有时候需要20-30分钟才能保存完成。

使用 pandas 转d

使用 pandas 将csv 转xlsx

import pandas as pd def csv_to_xlsx_pd(): csv = pd.read_csv('source.csv', encoding='utf-8') csv.to_excel('result.xlsx', sheet_name='data') #学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441 if __name__ == '__main__': csv_to_xlsx_pd()

数据量小于1w操作会比较快,数据量大于50w,保存会很慢。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3